﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sigecov.Models;
namespace Sigecov.Formularios
{
    public partial class FrmGerencialProduto : Form
    {
        public FrmGerencialProduto()
        {
            InitializeComponent();
        }

        private void btnNovoProduto_Click(object sender, EventArgs e)
        {
            FrmBase._tipoOperacao = "INCLUIR";
            FrmProduto produto = new FrmProduto();
            DialogResult confirmacao = produto.ShowDialog();
            if (confirmacao.ToString().ToUpper() == "CANCEL")
                Produto.ListarProdutos(dgvProduto);
        }

        private void btnAlterarProduto_Click(object sender, EventArgs e)
        {
            if (dgvProduto.Rows.Count > 0)
            {
                FrmBase._idAcao = Convert.ToInt32(dgvProduto.SelectedCells[0].Value);
                FrmBase._tipoOperacao = "ALTERAR";
                FrmProduto produto = new FrmProduto();
                DialogResult confirmacao = produto.ShowDialog();
                if (confirmacao.ToString().ToUpper() == "CANCEL")
                    Produto.ListarProdutos(dgvProduto);
            }
            else
                MessageBox.Show("Nenhum item foi selecionado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnDeletarProduto_Click(object sender, EventArgs e)
        {
            if (dgvProduto.Rows.Count > 0)
            {
                FrmBase._idAcao = Convert.ToInt32(dgvProduto.SelectedCells[0].Value);
                FrmBase._tipoOperacao = "DELETAR";
                FrmProduto produto = new FrmProduto();
                DialogResult confirmacao = produto.ShowDialog();
                if (confirmacao.ToString().ToUpper() == "CANCEL")
                    Produto.ListarProdutos(dgvProduto);
            }
            else
                MessageBox.Show("Nenhum item foi selecionado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnAtualizarProdutos_Click(object sender, EventArgs e)
        {
            Produto.ListarProdutos(dgvProduto);
        }
        private void FrmGerencialProduto_Load(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 9;
            Produto.ListarProdutos(dgvProduto);
        }

        private void txtPesquisa_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtPesquisa.Text))
            {
                using (SigecovContext DB = new SigecovContext())
                {

                    if (rdbPesquisaNomeProduto.Checked)
                        dgvProduto.DataSource = DB.Produtos.Join(DB.Estoques, p => p.proId, es => es.etqId, (p, es) => new { Código =  p.proId, Nome =  p.proNome, Estoque = es.etqQuantidade }).
                            Where(p => p.Nome.Contains(txtPesquisa.Text)).ToList();
                    else
                    {
                        int _codigo = Convert.ToInt32(txtPesquisa.Text);
                        dgvProduto.DataSource = DB.Produtos.Join(DB.Estoques, p => p.proId, es => es.etqId, (p, es) => new { Código = p.proId, Nome = p.proNome, Estoque = es.etqQuantidade }).
                            Where(p => p.Código == _codigo).ToList();
                    }
                }
            }
            else
                Produto.ListarProdutos(dgvProduto);
        }

        private void txtPesquisa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rdbPesquisaCodigoProduto.Checked)
                Ferramenta.SomenteNumero(e);
        }

        private void rdbPesquisaCodigoProduto_CheckedChanged(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 9;
            txtPesquisa.Clear();
        }

        private void rdbPesquisaNomeProduto_CheckedChanged(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 32767;
            txtPesquisa.Clear();
        }
    }
}
